查看原文
其他

数据仓库故事会

韩锋频道 数据仓库与Python大数据 2022-05-08

导读:本文回顾了(数据/信息)仓库的发展历史,算是一个很有意思的科普文。建议每一个数据从业者都通古知今。


1. 信息的起源

     

人类的发展,离不开信息的积累。从原始社会的口口相传,到需要将信息记录下来。那么如何记载信息呢?于是有了最早的记载方式——结绳记事。

这个方法貌似可以,但是复述起来,简直呜呜呜…有没有更好的方式了,古人创造出来文字。通过文字将发生的历史记载下来。从最早的甲骨文,到后面文字的不断发展。聪明的古人,不断演进发展着文字。可以说文字的演进历史,就是人类的进化历史。


2. 计算机的诞生

     

伴随着人类的进步,存储的信息越来越多,有没有更好的方式存储管理这些信息呢?终于到了1946年,因为军事的的需要,第一台电子计算机在美国宾夕法尼亚大学诞生了。虽然很久之前就有了计算尺、机械计算机、模拟电子计算机,但无疑电子计算机的问世具备了划时代的意义,并且一直影响到我们现在。这是个庞大而笨重的家伙,是我们现在这个计算机时代的老祖先。


3. 数据库的诞生

     

时间迈入了1960年代,野心勃勃的美国人提出了登月计划,这在当时可以个大事情。可是要飞到月球去,得有个交通工具,美国人起了个希腊神话中太阳神来命名了这个飞船。要制作这个飞船,可以动用了美国庞大的社会资源,可是这个超复杂的东东有着数不清的零件,如何管理它们成了大难题?于是计算机业内的百年老店—IBM出场了,研发了一款叫做ICS的软件,专门用来管理这些零件信息。后来以此为基础诞生了大名鼎鼎的IMS(Information Management System)数据库。这可是现代数据库的祖先。直到今天,这一老当益壮的数据库还在某些银行重要的核心岗位发挥着余热。


4. 三大模型之争

     

IMS数据库是基于层次结构构建的,很容易实现从上往下找,但对于左右横向查询就不太好用。另一个老牌公司GE看到了,开发出了新的基于网状的数据库IDS。这个貌似蜘蛛网结构的数据库很快取得的不错的市场成绩。作为行业的老大,IBM自然不会坐以待毙,在一个超级英雄EF.Codd(下图中,曾获得图灵奖)的带领下,提出了关系模型。一时间,层次、网状、关系三大关系模型杀的浑天黑地。直到一个重要的语言-SQL的出现,改变了整个战局。这是一个如此简单易懂的语言,可以很容易描述数据访问需求,战局的天平倾斜了关系模型。后来,聪明人扎堆的加州大学伯克利分校开发了INGRES(就是现在的PostgreSQL)数据库,证明关系模型是靠谱的,才为这场战争画上了句号。


5. 数据仓库的诞生

     

随着关系模型的成功,一大批数据库产品纷纷涌现,从早期的Oracle、DB2、SyBase、Informix等等。这些数据库产品很好地满足了数据存储计算的需要。各大公司也是赚的盆满钵满。但是随着企业的发展,这些处理的数据量越来越大,而且还需要从更多的维度去分析这些数据。原来这些产品都不太能满足需要。于是一些小公司开始在这个领域深挖下去,1981年NCR公司建立了第一个面向分析的数据库,1983年Teradata公司为美国富国银行建立了第一个决策系统(BTW,直到今天Teradata仍然处于数据行业的龙头榜首)。直到1988年,又是来自IBM公司研究员第一次提出了新的术语来描述这个场景 — 数据仓库(Data Warehouse),真正为这类产品打开了一扇大门。



6. 数仓理论基础

     

数据仓库在诞生之初,走过了一段黑暗的历史,很多实施项目都失败了。其后面原因是没有理论基础(都不会玩)。1992年,一个牛逼的老爷子Bill Inmon写了一本书《如何构建数据仓库》,第一次把如何玩数仓给讲明白了,真正为数据仓库大规模推广打下基础。这个老爷子也被后来被称为“数仓之父”。这本书指出“数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合”。不过后来在实施路径上,又有新的做法,其代表性的人物就是Ralph Kimball,其在94年提出了《数据仓库的工具》一书,描述一种新的实施方式,掀起数据集市建设的热潮,大有从数据集市逐渐取代企业级数据仓库。两者争论不休,但各有利弊。前者主张数据仓库建设应采取自上而下的方式,以三范式进行模型设计;后者则建议采取自上而上的方式,以维度模型进行设计。到了1998年,Inmon提出了新的BI框架-CIF,把Kimball的数据集市包含进来。现在CIF已经成为建设数据仓库的红宝书。



7. 大数据的冲击

     

在很长一段时间,关系型数据库承载数据仓库的基础能力。但到了上世纪90年代,随着互联网的兴起,数据有了新的变化。需要数据库承载更大容量、更快速度、多样性结构等问题,整个数据库行业都在数据爆炸式的增长下瑟瑟发抖。就在这个时候,Google带来了一丝光亮,著名的三篇论文为整个数据行业带来巨大冲击。首次提出了大数据概念,拉开了“大数据”时代的大幕。各个公司(特别是互联网企业)纷纷抛弃传统手段,重起炉灶。原来令人困扰的问题,似乎一夜之间找到答案,粗暴计算模型+标准廉价硬件搞定一切,精巧设计、完美事务、标准SQL,都不如多招几个码农来的实惠。虽然数据库界,痛心疾首、奔走呼号,但似乎无人听到;仿佛一夜之间数据库几十年的积累被大数据吊打。

然而,这所谓没有完美的“银弹”。大数据的狂野架构,从诞生之日起就决定其“出身”。虽然在后来的大数据体系中引入SQL、MPP引擎、列存等等,也只不过吸取数据库几十年积累精华的一点皮毛。在其野蛮生长的基础,就很难改进。对于客户而言,大数据就如同一头怪兽,其能力强大但也不容驯服,需要一大批驯兽师(大数据专家)才能降服。这点远不如数据库来的亲近。于是就连Google这样的大厂也推出了Spanner这样的产品。


8. 回归数据库

     

数据库,在近些年来又迎来了春天。随着分布式协议的成熟,人们找到了一种新的方式来解决之前的痛点。分布式架构 + RDBMS = NEW SQL。之前面对的各种数据痛点:海量数据、极致性能、多模异构等问题,在新的架构下似乎也不是问题。而熟悉的SQL、数据一致性等又回来人们的身边。在数仓场景下,原来大数据方案中的各种工具组合,也终于可用一把瑞士军刀解决。于是乎,近两年无论是商业产品还是开源软件;无论是官方标准还是行业趋势,分布式数据库正逐步走入前台。


9. 云+数仓 = 云原生数据仓库

     

数据仓库,一直以来有些很困扰的问题。例如:面临着数据量爆炸性增长的问题,管理复杂、运维成本高的问题,价格昂贵、使用门槛较高问题等等。这些问题长期困扰着企业对数据仓库的使用。云的出现,为这些问题的解决开启一个新的方向。其从诞生之初,就致力于解决资源供给的问题。云与数仓的结合,提供了即开即用、无限扩展、简易运维、普惠大众,想想都会笑醒:)云原生数仓愈发受到人们的瞩目。它已经不仅仅是个概念,而是已经逐步走入成熟。



往期推荐

Kafka面试题系列(进阶篇)

Kylin Flink Cube 引擎的前世今生

Druid 在有赞的实践

字节跳动ClickHouse在用户增长分析场景的应用

基于Flink商品实时推荐系统项目



数仓社区:

关注数仓、Python、大数据


长按扫码可关注



关注不迷路~ 各种干货、资源定期分享



戳原文,数仓之路!     

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存